//
//  RttiResult
//
//  Created by Caue W. on 2011-03-30.
//  Copyright (c) 2011 __MyCompanyName__. All rights reserved.
//
package time.compiler.types.runtime;
import time.compiler.types.MetadataCollection;
import time.compiler.types.runtime.PlatformResult;
import time.Errors;

@:abstract class RttiMetadata<T> 
{
	private var hasBeforeLoad:Bool;
	private var hasAfterLoad:Bool;
	private var hasBeforeSave:Bool;
	private var hasAfterSave:Bool;
	
	private function new() : Void
	{
		hasBeforeLoad = hasAfterLoad = hasBeforeSave = hasAfterSave = false;
	}
	
	public function init(collection:MetadataCollection) : Void
	{
		/*
		
		here we will put all initialization code, mainly getting other RttiMetadata loaders
		
		*/
	}
	
	
	public function beforeLoad(inst:T) : Void
	{
		throw NotImplemented;
	}
	
	public function load(inst:T, res:PlatformResult) : Void
	{
		throw NotImplemented;
	}
	
	public function afterLoad(inst:T) : Void
	{
		throw NotImplemented;
	}
	
	
	public function beforeSave(inst:T) : Void
	{
		throw NotImplemented;
	}
	
	public function save(inst:T, res:PlatformResult) : Void
	{
		throw NotImplemented;
	}
	
	public function afterSave(inst:T) : Void
	{
		throw NotImplemented;
	}
}